Tato otázka již má odpovědi zde: Obrátit řetězec v Pythonu (29 odpovědí) Uzavřeno před 4 lety. Snažím se zvrátit řetězec a pomocí níže uvedeného kódu, ale výsledná hodnota reverzního seznamu je None. Kód: str_a = 'Toto je míchání' rev_word = str_a.split () rev_word = rev_word.reverse () rev_word = '' .join (rev_word) Vrátí TypeError. Proč?
2021-01-15 08:10:19
.reverse () vrací None. Proto byste jej neměli přiřadit k proměnné. Místo toho použijte toto: stra = 'Toto je řetězec' revword = stra.split () revword.reverse () revword = ''. join (revword) Spustil jsem pro vás kód na IDEOne, abyste viděli výstup. (Všimněte si také, že výstup je stringaisThis; místo toho můžete použít '' .join (revword), s mezerou.) Všimněte si také, že metoda, kterou jste zadali, obrátí pouze slova, nikoli text. @ ron.rothman poskytl odkaz, který podrobně popisuje, jak obrátit řetězec jako celek. | Toto je můj osobní oblíbený způsob obrácení řetězce: stra = "Toto je řetězec" revword = stra [:: - 1] print (revword) # "gnirts a si sihT nebo pokud chcete změnit pořadí slov: revword = "" .join (stra.split () [:: - 1]) print (revword) # "string a is This" :) | Různé obrácení na provázku: instring = 'Toto je řetězec' reversedstring = instring [:: - 1] tisk obráceného řetězce # gnirts a si siHT wordsreversed = '' .join (slovo [:: - 1] pro slovo v instring.split ()) tisk slov zvrátit # sihT si a gnirts revwordorder = '' .join (slovo za slovem v instring.split () [:: - 1]) print revwordorder # string a is This revwordandorder = '' .join (slovo [:: - 1] pro slovo v instring.split () [:: - 1]) vytisknout revwordandorder # gnirts a si siHT | Pro budoucí použití, když má objekt metodu jako [] .reverse (), obecně provádí tuto akci na objektu (tj. Seznam je tříděn a nevrací nic, None) na rozdíl od vestavěných funkcí, jako je tříděno, které provádějí akci na objekt a vrátí hodnotu (tj. seřazený seznam) | >>> s = 'toto je řetězec' >>> s [:: - 1] 'gnirts a si siht' >>> ''. připojit (obráceně) 'gnirts a si siht' | Smyčka for iteruje řetězec od konce (poslední písmeno) do začátku (první písmeno) >>> s = 'Můžete to zkusit také:]' >>> rev = '' >>> pro i v rozsahu (délky - 1, -1, -1): ... rev + = s [i] >>> rev ']: oot siht yrt nac uoY' | Na základě komentářů a dalších odpovědí: str_a = 'toto je řetězec' rev_word = '' .join (obrácené (str_a.split ())) Řetězení metod v Pythonu přece funguje ... | Zpětný seznam lze provést více než jedním způsobem. Jak již bylo zmíněno v předchozích odpovědích, dva jsou velmi prominentní, jeden s funkcí reverse () a dva s funkcí krájení. Uvádím několik poznatků, kterému bychom měli dát přednost. Pro obrácení seznamu Pythonu bychom měli vždy používat funkci reverse (). Dva důvody, jeden obrácení na místě a dva rychlejší než jiné. Mám několik údajů, které podporují moji odpověď, V [15]: len (l) Ven [15]: 1 000 V [16]:% timeit -n1 l.reverse () 1 smyčka, nejlepší ze 3: 7,87 µs na smyčku V [17]:% timeit -n1 l [:: - 1] 1 smyčka, nejlepší 3: 10 µs na smyčku U seznamu 1000 celých čísel fungovala funkce reverse () lépe ve srovnání s krájením. | Toto není odpověď, kterou hledáte? Projděte si další otázky se značkou python nebo se zeptejte na vlastní otázku.